#ifndef TC_STOCK_HPP
#define TC_STOCK_HPP

/** \file Stock.hpp 
 * Declarations for the template class Stock
 *
 * (C) Copyright by Semih Cemiloglu
 * All rights reserved, see COPYRIGHT file for details.
 *
 * $Id: Stock.hpp 110 2006-06-19 03:38:33Z semihc $
 *
 *
 */

#include <string>
#include "TA.hh"
#include "Security.hpp"


namespace TC {


  template <typename P = TAprice_t, typename V = TAvolume_t>
  class Stock : public Security<P, V>
  {
  public:
    // TYPES
    typedef P Price_t;
    typedef V Volume_t;
    typedef std::string Exchange_t;
    typedef std::string Code_t;

    // CREATORS
    Stock() {}
    Stock(Price_t opn, Price_t hi, Price_t lo, Price_t cls, Volume_t vol)
      : Security<P,V>(opn, hi, lo, cls, vol) {}

    // ACCESSORS
    Exchange_t getExchange() const { return m_exchange; }
    Code_t getCode() const { return m_code; }
    
    // MODIFIERS
    void setExchange(const Exchange_t& e) { m_exchange = e; }
    void setCode(const Code_t& c) { m_code = c; }

  private:
    // MEMBERS
    Exchange_t m_exchange;
    Code_t m_code;

  }; // end class

  
  //! Default Stock instantiation
  typedef Stock<TAprice_t, TAvolume_t> StockDef;


} // end namespace




#endif /* TC_STOCK_HH */
